package member.controller;

import java.sql.SQLException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import member.model.service.MemberService;
import member.to.ActionForward;
import member.to.MemberTO;

//로그인 처리를 하는 Controller 클래스.
/*
 * 로그인 처리 
 * 로그인 성공 - login_success.jsp(리다이렉트)
 * 로그인 실패 - login_form.jsp(요청 디스패치)
 */
public class LoginController implements Controller {

	@Override
	public ActionForward handle(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		ActionForward af = null;
		//1. 요청파라미터 조회 - id/password
		
		//2. 비지니스 로직 호출 - 2-1 MemberService(Model).getMemberById(id) : MemberTO
			//2-2 : 로그인 처리 - id(o/x)->password(o/x)
			// ->id(x) - request 속성에 id가 틀렸다라는 메세지를 binding하고 login_form.jsp로 이동
			// ->password(x) - request 속성에 password가 틀렸다는 메세지를 binding하고 login_form.jsp로 이동
			// -> id(o), password(o) - 로그인 성공처리:HttpSession 생성
			//				-session 속성으로 login_info-MemberTO객체를 binding 하고 login_success.jsp로 이동
		//3. 응답 페이지(View) 로 이동 - ActionForward 를 return
		/*****************************************************************/
		//1. 요청파라미터 조회 - id/password
		String id = request.getParameter("id");
		String password = request.getParameter("password");
		//2. 비지니스 로직 호출
		MemberService mms = MemberService.getInstance();
		try{
			MemberTO mto = mms.getMemberById(id);
			
			if(mto!=null){
				//패스 워드 비교
				if(password.equals(mto.getPassword())){//ID/Password 모두 맞는 경우
					HttpSession session = request.getSession();
					session.setAttribute("login_info", mto);
					af = new ActionForward("/MemberManagerFC_ibatis_inst/login_success.jsp", true);
				}else{//패스워드가 틀린 경우
					request.setAttribute("error_message", "패스워드가 틀렸습니다. 확인 후 다시 로그인 하세요.");
					af = new ActionForward("/login_form.jsp", false);
				}
			}else{//id가 없는 경우
				request.setAttribute("error_message", id+"는 없는 ID입니다. 확인 후 다시 로그인 하세요.");
				af = new ActionForward("/login_form.jsp", false);
			}
		} catch (SQLException e) {
			e.printStackTrace();
			request.setAttribute("error_message", "로그인 도중 오류 발생 : "
																							+e.getMessage());
			af = new ActionForward("/error.jsp", false);
		}
		//3. 응답 페이지(View) 로 이동 - ActionForward 를 return
		return af;
	}

}












